//multmap.cpp -- use a multimap
#include<iostream>
#include<string>
#include<map>
#include<algorithm>

using namespace std;

typedef int KeyType;
typedef pair<const KeyType,string> Pair;
typedef multimap<KeyType,string> MapCode;

int main()
{
	MapCode codes;

	codes.insert(Pair(415,"San Francisco"));
	codes.insert(Pair(510,"Oakland"));
    codes.insert(Pair(718,"Brooklyn"));
    codes.insert(Pair(718,"Staten Island"));
	codes.insert(Pair(415,"San Rafael"));
        codes.insert(Pair(510,"San Rafael"));
    	
	cout<<"415:"<<codes.count(415)<<endl;//对415号出现的次数进行计数

	cout<<"area code city\n";
	MapCode::iterator it;
	for(it=codes.begin();it!=codes.end();++it)
	cout<<"	"<<(*it).first<<"	"<<(*it).second<<endl;//first与second分别访问参数的第一个与第二个。
	pair<MapCode::iterator,MapCode::iterator>range=codes.equal_range(718);//这里太过分了....我不确定自己理解是正确的。
	cout<<"cities with area code 718:\n";
	for(it=range.first;it!=range.second;++it)
		cout<<(*it).second<<endl;
	return 0;
}

